'''
读文件相关的操作

pip install openpyxl 操作xlsx文件的包
'''
import configparser
import os.path

import openpyxl


def get_project_path():
    '''
    获取当前工程的路径
    :return: 返回一个字符串
    '''
    cf = os.path.realpath(__file__)  # __file__ 存放了当前文件的路径，readfile.py
    # print("调试信息：", cf)
    cd = os.path.dirname(cf)  # 文件所在的目录，caw
    # print("调试信息：", cd)
    cd = os.path.dirname(cd)  # caw的上级目录，ranzhiAutoTest
    # print("调试信息：", cd)
    return cd + "\\"


def read_xlsx(filepath, sheet_name="Sheet1"):
    '''
    读取xlsx文件，把文件的内容读取后，返回一个list。每一行是list中的一个元素。
    :param filepath:
    :param sheet_name:
    :return:
    '''
    filepath = get_project_path() + filepath  # 把路径拼接完整
    wb = openpyxl.load_workbook(filepath)  # 加载整个Excel文件
    ws = wb[sheet_name]  # 获取指定的工作表
    r = []  # 存放最终结果的列表
    for row in ws:  # 遍历每一行
        a = []  # 存放一行的数据
        for cell in row:  # 遍历每一个单元格
            if cell.value is None:  # 单元格的值为空时，添加一个空字符串
                a.append("")
            else:
                a.append(cell.value)
        r.append(a)  # 把这一行加入到结果列表中
    return r[1:]  # 去掉表头


def read_ini(filepath, section, key):
    """读取ini文件，获取指定section下面的key对应的值"""
    filepath = get_project_path() + filepath
    cp = configparser.ConfigParser()  # 创建一个configparser对象
    cp.read(filepath, encoding="utf-8")  # 读取ini文件
    value = cp.get(section, key)  # 获取指定section下面的key对应的值
    return value


def read_yaml(filepath):
    """先安装yaml，"""
    import yaml
    filepath = get_project_path() + filepath
    with open(filepath, 'r', encoding='utf-8') as f:
        content = f.read()
        a = yaml.load(content, Loader=yaml.FullLoader)
        return a


# 测试代码，用完删除
if __name__ == '__main__':
    a = read_yaml('/data/register_data.yaml')
    print(a)

